﻿Public Class Validar
    'Este metodo de validar devuelve:
    ' 1 si el dato no es numérico
    ' 2 si es numerico pero fuera de rango
    ' 3 si es correcto



    Public Function ValidarInt(ByVal num As String, ByVal min As Integer, ByVal max As Integer)
        If Not IsNumeric(num) Then
            Return 1
        Else
            If num < min Or num > max Then
                Return 2
            End If
        End If
        Return 3

    End Function


    'Este método devuelve:
    '1 si el tipo no es numérico
    '2 si está fuera de rango
    '3 es correcto


    Public Function ValidarTlf(ByVal tlf As String)
        If Not IsNumeric(tlf) Then
            Return 1

        Else
            If tlf < 600000000 Or tlf > 999999999 Then
                Return 2
            End If
        End If
        Return 3
    End Function



    'Esta función comprueba un String char a char
    'Si es numérico, devolverá 1
    'Si tiene caracteres no aceptados, devolverá 2
    'Si es correcto, devuelve 3

    Public Function ValidarNombre(ByVal nombre As String)
        If IsNumeric(nombre) Then
            Return 1
        Else
            Dim a As Integer = 0
            Dim flag As Boolean = True
            For a = 0 To (nombre.Length - 1)

                'Comprueba cada char del String, y si el código ASCII no esta en la condicion, pasa flag a false.
                If Not ((Asc(nombre(a)) > 62 And Asc(nombre(a)) < 91) Or (Asc(nombre(a)) > 96 And Asc(nombre(a)) < 123) Or Asc(nombre(a)) = 32 Or Asc(nombre(a)) = 130 Or Asc(nombre(a)) = 45 Or Asc(nombre(a)) = 225 Or Asc(nombre(a)) = 233 Or Asc(nombre(a)) = 237 Or Asc(nombre(a)) = 243 Or Asc(nombre(a)) = 250 Or Asc(nombre(a)) = 241 Or Asc(nombre(a)) = 209) Then
                    flag = False
                End If

            Next

            If flag = False Then
                Return 2

            Else
                Return 3

            End If
        End If
    End Function

    'Validamos DNI
    'Si es numerico devuelve 1
    'Si no tiene la forma q tiene que tener devuelve 2
    'Si es correcto devuelve 3
    Public Function ValidarDNI(ByVal dni As String)
        If IsNumeric(dni) Then
            Return 1
        Else
            If dni.Length < 9 Then
                Return 2
            Else
                Dim numdni As String = dni.Substring(0, 8)
                If ((IsNumeric(numdni)) And (ValidarNombre(dni.Substring(8)) = 3)) Then
                    Return 3
                Else
                    Return 2
                End If
            End If
        End If
    End Function

    'Validamos CIF
    'Si es numerico devuelve 1
    'Si no tiene la forma q tiene que tener devuelve 2
    'Si es correcto devuelve 3
    Public Function ValidarCIF(ByVal cif As String)
        If IsNumeric(cif) Then
            Return 1
        Else
            If cif.Length < 9 Then
                Return 2
            Else
                Dim numcif As String = cif.Substring(1)
                If ((IsNumeric(numcif)) And (ValidarNombre(cif.Substring(0, 1)) = 3)) Then
                    Return 3
                Else
                    Return 2
                End If
            End If
        End If
    End Function
End Class
